

// Current estimated progress: 70%
enum Spells
{
    /*Phase I: The True Horde*/

    // Garrosh Hellscream
    SPELL_DESECRATE_TRIGGER_MISSILE = 144748,
    SPELL_DESECRATE_DUMMY = 144745,
    SPELL_DESECRATE_DAMAGE = 144758,
    SPELL_DESCERATE_DOT = 144762,
    SPELL_DESECRATED_WEAPON = 145880,
    SPELL_DESECRATED_PURPLE_GROUND = 144760,
    SPELL_HELLSCREAMS_WARSONG = 144821,

    // Kor'kron Warbringer
    SPELL_HAMSTRING = 144582,

    // Farseer Wolf Rider
    SPELL_ANCESTRAL_FURY = 144585,
    SPELL_FURY = 144588,
    SPELL_ANCESTRAL_CHAIN_HEAL = 144583,
    SPELL_CHAIN_LIGHTNING = 144584,

    // Siege Engineer - powers the Kor'kron Star
    // Korkron Star - 
    SPELL_IRON_STAR_IMPACT_AURA_VISUAL_FULL = 144645,
    SPELL_IRON_STAR_IMPACT_DAMAGE_KNOCKBACK = 144650,
    SPELL_IRON_STAR_IMPACT_DAMAGE_KNOCKBACK01 = 144653,
    SPELL_IRON_STAR_DUMMY = 148299,
    SPELL_IRON_STAR_AURA_DUMMY_UNKNOWN = 149468,
    SPELL_EXPLODING_IRON_STAR = 144798,

    /*Phase (INTERMISSION): Realm of Y'Shaarj*/

    // Y'shraaj?
    SPELL_YSHAARJ_PROTECTION = 144920,
    SPELL_YSHAARJ_PROTECTION_AURA = 144945,

    SPELL_ANNIHILATE_DAMAGE = 144969,
    SPELL_ANNIHILIATE_FORCE_CAST = 144969,
    SPELL_ANNIHILATE_SUMMON = 148203,

    // Embodied Fear
    SPELL_CONSUMED_COURAGE = 149011,
    SPELL_COURAGE_TRIGGER_MISSILE = 148980,
    SPELL_COURAGE_AREA_TRIGGER = 148980,
    SPELL_COURAGE_REDUCE_DAMAGE = 148983,
    SPELL_CRUSHING_FEAR_PERIODIC_TRIGGER = 147319,
    SPELL_CRASHING_FEAR_TRIGGER_MISSILE = 147320,

    // Embodied Doubt
    SPELL_CONSUMED_FAITH = 149033,
    SPELL_CONSUMED_FAITH_TRIGGER_MISSILE = 148991,
    SPELL_EMBODIED_DOUBT_DAMAGE = 145275,
    SPELL_EMBODIED_DOUBT_DAMAGE01 = 149347,

    // Embodied Despair
    SPELL_HOPE = 149002,
    SPELL_CONSUMED_HOPE_TRIGGER = 149032,
    SPELL_ULTIMATE_DESPAIR_TRIGGER_SPELL = 147341,
    SPELL_ULTIMATE_DESPAIR_DAMAGE = 147342,

    /*Phase II - Power of Y'Shaarj*/
    SPELL_WHIRLLING_CORRUPTION_PERIODIC_SPELL = 144985,
    SPELL_WHIRLING_CORRUPTION_DAMAGE = 144989,
    SPELL_WHIRLING_CORRUPTION_SCRIPT_EFFECT = 145036,

    SPELL_EMPOWERED_WHIRLING_CORRUPTION_TRIGGER_MISSILE = 145023,
    SPELL_EMPOWERED_WHIRLING_CORRUPTION_EFFECT_SCHOOL_DAMAGE = 145033,
    SPELL_EMPOWERED_WHIRL_CORRUPTION_DUMMY = 145037,
    SPELL_EMPOWERED_WHIRL_CORRUPTION_SPELL_AURA_DUMMY = 145833,

    SPELL_TOUCH_OF_YSHRAAJ_SCHOOL_ABSORB = 145065,
    SPELL_TOUCH_OF_YSHRAAJ_SCHOOL_ABSORB01 = 145071,
    SPELL_TOUCH_OF_YSHRAAJ_SCRIPT_EFFECT = 145096,
    SPELL_TOUCH_OF_YSHRAAJ_SCRIPT_EFFECT01 = 145163,
    SPELL_TOUCH_OF_YSHRAAJ_STUN = 149524,

    SPELL_EMPOWERED_TOUCH_OF_YSHRAAJ_DEBUFF = 145175,
    SPELL_EMPOWERED_TOUCH_OF_YSHRAAJ = 145832,

    SPELL_EMPOWER_DESECRATE_TRIGGER_MISSILE = 144749,
    SPELL_EMPOWERED_DESECRATE_DAMAGE_SUMMON = 144816,
    SPELL_EMPOWERED_DESECRATE_WEAPON_AURA = 144818,
    SPELL_EMPOWERED_DESECRATE_APPLY_AURA = 145829,

    SPELL_GRIPPING_DESPAIR_PERIODIC_DAMAGE = 145183,
    SPELL_GRIPPING_DESPAIR_SCRIPT_EFFECT = 145207,
    SPELL_EMPOWERED_GRIPPING_DESPAIR_PERIODIC_DAMAGE = 145195,
    SPELL_EMPOWERED_GRIPPING_DESPAIR_AURA_DUMMY = 145831,
    SPELL_EMPOWERED_GRIPPING_DESPAIR_DAMAGE = 149252,

    SPELL_EXPLOSIDE_DESPAIR_DAMAGE = 145199,
    SPELL_EXPLOSIDE_DESPAIR_MECHANIC_PRECENT = 145213,

    //2ND PHASE PROPS
    SPELL_ENTER_THE_REALM_OF_YSHAARAJ_PURPLE_BEAM = 144867,
    SPELL_ENTER_THE_REALM_OF_YSHAARAJ_JUMP = 144868,
    SPELL_ENTER_THE_REALM_OF_YSHAARAJ_SCREEN_EFFECT = 144867,
    SPELL_REALM_OF_YSHAARAJ_DEBUFF_PURPLE = 147266,
    SPELL_LIGHT_BULB = 148982,
    SPELL_SHA_HEART_OF_YSHAARAH_PROJECTILE = 145431,
    SPELL_PHASE_TWO_TRANSFORM_GARROSH_MODEL = 144842,
    SPELL_PHASE_TWO_TRANSITION_PURPLE_SHIT = 144852,
    SPELL_GARROSH_POWER = 145801, // *twerks in japanesse*

    /*Roleplaying*/
    SPELL_ASTRAL_RECALL = 147811,
    SPELL_CALL_OF_THE_ELEMENTS = 147815,
    SPELL_ICHOR_OF_YSHAARJ = 147567,
    SPELL_GARROSH_THRALL_SPARRING = 147892,
    SPELL_THRALL_STUNNED_FROM_HIT = 147861,
    SPELL_DEFEND_AGAINST_THRALL = 147899,
    SPELL_CAST_THRALL_AWAY = 147831,
    SPELL_TEMPORARY_STRANGULATED_COSMETIC = 78037,
    SPELL_ACTIVATE_IRON_STAR = 144616,
    SPELL_SHA_COSMETIC_SHA_CHANNEL = 145431,
    SPELL_SHA_WALL_AREATRIGGER = 144920,
    SPELL_SHA_CHANNEL_2ND_PHASE = 144946,

    //3d PHASE
    SPELL_EMPOWERING_CORRUPTION = 145043,

    SPELL_TRANSITION_THIRD_PHASE_CHANGE_FORM = 145222,
    SPELL_TRANSITION_THIRD_PHASE = 146756,
    SPELL_TRANSITION_THIRD_PHASE_VISUAL = 146845,
};

enum Events
{
    // Garrosh Hellscream
    EVENT_DESECRATE = 1,
    EVENT_DESECRATE_WEAPON,
    EVENT_HELLSCREAMS_WARSONG,
    EVENT_MOVE_TO_GARROSH,

    // Kor'kron Warbringer
    EVENT_HAMSTRING,

    // Farseer Wolf Rider
    EVENT_ANCESTRAL_FURY,
    EVENT_ANCESTRAL_CHAIN_HEAL,
    EVENT_CHAIN_LIGHTNING,

    // Siege Engineer
    EVENT_IRON_STAR_IMPACT,
    EVENT_IRON_STAR_IMPACT01,
    EVENT_IRON_STAR_IMPACT02,
    EVENT_ACTIVATE_IRON_STAR,
    EVENT_ACTIVATE_IRON_STAR01,

    // Y'shraaj 
    EVENT_YSHAARAJ_PROTECTION,
    EVENT_YSHAARJ_ANNHLIATE,

    // Embodied Fear
    EVENT_EMBODIED_FEAR,
    EVENT_CONSUMED_COURAGE,
    EVENT_CRUSHING_FEAR,

    // Embodied Doubt
    EVENT_EMBODIED_DOUBT,
    EVENT_CONSUMED_FAITH,

    // Embodied Despair
    EVENT_EMBODIED_DESPAIR,
    EVENT_CONSUMED_HOPE,
    EVENT_ULTIMATE_DESPAIR,

    EVENT_WHIRLING_CORRUPTION,
    EVENT_EMPOWERED_LIVING_CORRUPTION,
    EVENT_MINION_OF_YSHARAAJ,

    EVENT_TOUCH_OF_YSHAARJ,
    EVENT_EMPOWERED_DESECRATE,
    EVENT_EMPOWERED_GRIPPING_DESPAIR,
    EVENT_EXPLOSIDE_DESPAIR,
    EVENT_GRIPPING_DESPAIR,

    EVENT_KORKRON_WARBRINGERS,
    EVENT_FARSEER,
    EVENT_ENGINEERS,

    //2ND PHASE
    EVENT_REALM_OF_YSHARAAJ_TELEPORT,
    EVENT_ANNHILIATE,
    EVENT_BACKPORT,
    EVENT_PORT_TO_GARROSH_HALL,

    EVENT_TURN_PHASE_2,
    EVENT_TURN_PHASE_2_0,
    EVENT_TURN_PHASE_2_1,
    EVENT_TURN_PHASE_2_2,

    //3D PHASE
    EVENT_EMPOWERING_CORRUPTION,

    EVENT_MY_WORLD,
    EVENT_MY_WORLD_REMOVE_FLAGS,

};

enum Actions
{
    ACTION_IRON_STAR_LEFT = 0,
    ACTION_IRON_STAR_RIGHT,
    ACTION_IRON_STAR_IMPACT,

    ACTION_IRON_STAR_IMPACT01,
    ACTION_ACTIVATE_IRON_STAR,

    ACTION_ACTIVATE_PHASE_1,
    ACTION_ACTIVATE_PHASE_2,
    ACTION_ACTIVATE_PHASE_3,
    ACTION_ACTIVATE_PHASE_4,

    // 2ND PHASE - INTERRMISSION
    ACTION_RESET_COUNTER_DEAD_EMBODIEDS,
    ACTION_EMBODIED_COUNT_DEATH,
    ACTION_BACKPORT,
    ACTION_TELEPORT,
};

enum Creatures
{
    CREATURE_EMBODIED_FEAR = 72237,
    CREATURE_EMBODIED_DOUBT = 72236,
    CREATURE_EMBODIED_DESPAIR = 72238,
    CREATURE_MINION_YSHAARJ = 72272,
    CREATURE_KORKRON_WARBRINGER = 71979,
    CREATURE_FARSEER_WOLF_RIDER = 71983,
    CREATURE_VICIOUS_WAR_WOLF = 71994,
    CREATURE_SIEGE_ENGINEER = 71984,
    CREATURE_KORKRON_IRON_STAR = 73059,

    // Triggers
    CREATURE_DESECRATED_WERAPON_TRIGGER = 72154,
    CREATURE_STAR_EXPLOSIVE_TRIGGER = 86241,

    //2ND PHASE
    CREATURE_GARROSH_2ND_PHASE = 71865,
    CREATURE_SHA_VORTEX = 72239,
    CREATURE_ANNHLIATE_TRIGGER = 73625,
    CREATURE_HEART_OF_YSHAARAJ = 72228,
    CREATURE_AURA_OF_YSHAARAJ = 78097,
};

enum GameObjects
{
    GAMEOBJECT_GARROSH_ENCOUNTER_SHA_VORTEX_COLLISION = 221132,
    GAMEOBJECT_HEART_OF_YSHAARAJ = 221995,
    GAMEOBJECT_ENTRANCE = 221438, // Doors
    //GAMEOBJECT_RIGHT_DOOR = 221440,
    //GAMEOBJECT_LEFT_DOOR = 221439,
    GAMEOBJECT_2NDPHASE_COLLISION = 221132,
};

enum Phases
{
    PHASE_THE_TRUE_HORDE = 1,
    PHASE_REALM_OF_YSHAARJ,
    PHASE_POWER_OF_YSHARJ,
    PHASE_MY_WORlD,
};

enum Locations
{
    LOCATION_TERRACE_OF_ENDLESS_SPRINGS = 1,
    LOCATION_JADE_TEMPLE,
    LOCATION_RED_CRANE,
    LOCATION_THIRD_PHASE,
};

enum Movements
{
    MOVEMENT_PHASE_2_ACTIVATION = 9,
    MOVEMENT_PHASE_3_ACTIVATION = 10,
    MOVEMENT_SIEGE_ENGINEER_IRON_STAR_ACTIVATION = 11,
};

enum Talks
{
    TALK_AGGRO = 1,
    TALK_DEATH,
    TALK_DEATH01,
    TALK_EVENT_1,
    TALK_EVENT_2,
    TALK_EVENT_3,
    TALK_EVENT_4,
    TALK_EVENT_5,
    TALK_EVENT_6,
    TALK_EVENT_7,
    TALK_EVENT_8,
    TALK_EVENT_9,
    TALK_INTRO01,
    TALK_INTRO02,
    TALK_INTRO03,
    TALK_INTRO04,
    TALK_INTRO05,
    TALK_GARROSH_KILL01,
    TALK_GARROSH_KILL02,
    TALK_GARROSH_KILL03,

    TALK_GARROSH_SPELL01,
    TALK_GARROSH_SPELL02,
    TALK_GARROSH_SPELL03,
    TALK_GARROSH_SPELL04,
    TALK_GARROSH_SPELL05,
    TALK_GARROSH_SPELL06,
    TALK_GARROSH_SPELL07,
    TALK_GARROSH_SPELL08,
    TALK_GARROSH_SPELL09,

    TALK_THRALL_INTRO01 = 31,
    TALK_THRALL_INTRO02 = 32,
    TALK_THRALL_INTRO03 = 33,

    TALK_YSHAARAJ_01,
    TALK_YSHAARAJ_02,
    TALK_YSHAARAJ_03,
    TALK_YSHAARAJ_04,
    TALK_YSHAARAJ_05,
    TALK_YSHAARAJ_06,
    TALK_YSHAARAJ_07,
    TALK_YSHAARAJ_08,
    TALK_YSHAARAJ_09,
};

Position l_PositionHeartOfYsharaaj = { 1073.150f, -5639.317f, -289.0534f, 3.042000f };
Position l_PositionGarroshHellScreamHomePoint = { 1015.198f, -5633.550f, -314.392f, 6.219517f };
Position l_PositionGarroshHellScreamSecondPhasePositionPreConvert = { 1072.245f, -5639.461f, -317.389f, 6.148828f };

// Gates
Position l_PositionGarroshHellScreamGates[2] =
{
    { 1025.963f, -5564.213f, -317.705f, 6.185587f },
    { 1011.160f, -5793.381f, -317.706f, 6.240668f },
};

// Iron Stars
Position l_PositionIronStars[2] =
{
    { 1059.731f, -5516.858f, -314.489f, 4.628573f }, // Left
    { 1086.391f, -5761.771f, -314.488f, 1.560934f }, // Right
};

// Thrall Initial Position
Position l_PositionThrall = { 1129.647f, -5645.329f, -291.321f, 3.071768f };

// Thrall Jumping Position
Position l_PositionThrallJump = { 1072.196f, -5638.686f, -317.3065f };

// Position of pre fight
Position l_PositionThrallMovementPreFightWithGarrosh = { 1037.048f, -5636.475f, -317.688f };
Position l_PositionTGarroshMovementPreFightWithGarrosh = { 1029.421f, -5634.744f, -317.688f };

// Enemy Gates
Position l_PositionLeftDoor = { 1001.196f, -5700.362f, -317.719f, 6.104909f };
Position l_PositionRightDoor = { 1016.989f, -5565.168f, -317.703f, 6.135060f };

// Iron Stars
Position l_PositionRightIronStarPosition = { 1087.117f, -5753.007f, -314.485f, 1.477537f };
Position l_PositionLeftIronStarPosition = { 1059.390f, -5524.490f, -314.485f, 4.641170f };

// Engineers
Position l_PositionEngineers[2] =
{
    { 1085.927f, -5521.291f, -304.484f, 3.655109f },
    { 1060.793f, -5763.019f, -304.489f, 1.425169f },
};

// Engineers Movement
Position l_PositionEngineersMovement[2] =
{
    { 1084.159f, -5535.152f, -304.485f, 4.557836f },
    { 1062.482f, -5746.124f, -304.485f, 0.200395f },
};

// Player's starter position if wiped
Position l_PositionStartPlayersWipe = { 1015.260f, -5633.509f, -314.393f, 6.261200f };

// Terrace
Position l_PositionTerraceOfEndlessSpringsGarrosh = { 816.069f, -5602.605f, -397.706f, 3.052884f };
Position l_PositionTerraceOfEndlessSpringsPlayers = { 1082.207f, -5631.792f, -423.454f, 3.061847f };

// Jade Serpent
Position l_PositionJadeTempleGarrosh = { 1104.942f, -5343.710f, -349.787f, 1.451537f };
Position l_PositionJadeTemplePlayers = { 1093.012f, -5453.214f, -354.903f, 1.386826f };

// Red Crane
Position l_PositionRedCraneGarrosh = { 1056.115f, -5828.619f, -368.667f, 1.464649f };
Position l_PositionRedCranePlayers = { 1055.218f, -5843.208f, -318.859f, 4.629406f };
